namespace System.Net
{
    /// <summary>
    /// Network state manager.
    /// </summary>
    public interface INetworkStateManager
    {
        /// <summary>
        /// When implemented, validates network state. If <paramref name="raiseException">raiseException</paramref> specified and true - throws exception.
        /// </summary>
        /// <param name="raiseException"></param>
        void ValidateNetworkState(bool raiseException = true);

        /// <summary>
        /// Gets is network connected state asynchronously
        /// </summary>
        /// <param name="callBack"></param>
        void GetIsNetworkAvailableAsync(Action<bool> callBack);

        /// <summary>
        /// Gets is network connected state.
        /// </summary>
        bool IsNetworkConnected { get; }
    }
}